﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BusinessLogicLayer;

namespace PresentationLayer
{
    public delegate void HienThiDanhSachNghiPhep(List<NghiPhep> ds);

    public enum TimKiemNghiPhep
    {
        TheoNgay,
        TheoNhanVien
    }
    public partial class frmTimKiemNghiPhep : Form
    {
        TimKiemNghiPhep loai;
        HienThiDanhSachNghiPhep HienThiDanhSach;
        public frmTimKiemNghiPhep(TimKiemNghiPhep loai, HienThiDanhSachNghiPhep hienthidanhsach)
        {
            InitializeComponent();
            HienThiDanhSach = hienthidanhsach;
            this.loai = loai;
            switch (loai)
            {
                case TimKiemNghiPhep.TheoNgay:
                    Text = "Tìm kiếm nghỉ phép theo ngày";
                    lblKeywords.Text = "Ngày:";
                    dtiDate.Visible = true;
                    dtiDate.Value = DateTime.Today;
                    break;
                case TimKiemNghiPhep.TheoNhanVien:
                    Text = "Tìm kiếm nghỉ phép theo nhân viên";
                    cbMaNhanVien.Visible = cbTenNhanVien.Visible = true;
                    lblKeywords.Text = "Nhân viên:";
                    break;
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            switch (loai)
            {
                case TimKiemNghiPhep.TheoNgay:
                    if (dtiDate.Value != DateTime.MinValue)
                    {
                        List<NghiPhep> nps = new NghiPhepManager().TimTheoNgay(dtiDate.Value).ObjectList;
                        if (nps.Count == 0)
                        {
                            MessageBox.Show("Không tìm thấy thông tin nghỉ phép nào!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                        else
                        {
                            HienThiDanhSach(nps);
                            Close();
                        }
                    }
                    else
                        MessageBox.Show("Bạn chưa chọn ngày!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    break;
                case TimKiemNghiPhep.TheoNhanVien:
                    List<NghiPhep> np = new NghiPhepManager().TimTheoNhanVien(Convert.ToString(cbTenNhanVien.SelectedValue)).ObjectList;
                    if (np.Count == 0)
                    {
                        MessageBox.Show("Không tìm thấy thông tin nghỉ phép nào!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        HienThiDanhSach(np);
                        Close();
                    }
                    break;
            }
        }

        private void frmTimKiemNghiPhep_Load(object sender, EventArgs e)
        {
            switch (loai)
            {
                case TimKiemNghiPhep.TheoNgay:
                    dtiDate.Value = DateTime.Today;
                    break;
                case TimKiemNghiPhep.TheoNhanVien:
                     List<NhanVien> ListNhanVien = new NhanVienManager().LayDS().ObjectList;
                if (ListNhanVien.Count == 0)
                {
                    MessageBox.Show("Không có nhân viên nào hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    Close();
                }
                cbMaNhanVien.DataSource = cbTenNhanVien.DataSource = ListNhanVien;
                cbMaNhanVien.ValueMember = cbTenNhanVien.ValueMember = "MaNhanVien";
                cbTenNhanVien.DisplayMember = "HoTen";
                cbMaNhanVien.DisplayMember = "MaNhanVien";

                cbMaNhanVien.DataSource = cbTenNhanVien.DataSource = ListNhanVien;
                foreach (var item in ListNhanVien)
                {
                    cbMaNhanVien.AutoCompleteCustomSource.Add(item.MaNhanVien);
                    cbTenNhanVien.AutoCompleteCustomSource.Add(item.HoTen);
                }

                cbMaNhanVien.AutoCompleteMode = cbTenNhanVien.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                cbMaNhanVien.AutoCompleteSource = cbTenNhanVien.AutoCompleteSource = AutoCompleteSource.CustomSource;
                    break;
            }
        }
    }
}
